package com.dhl.fin.api.domain;

import com.dhl.fin.api.common.annotation.ExcelTitle;
import com.dhl.fin.api.common.domain.BasicDomain;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.persistence.*;
import java.util.Date;

/**
 * @author CuiJianbo
 * @since 2025/5/19
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Entity
@Table(name = "t_menses_remind_task")
public class MensesRemindTask extends BasicDomain {

    private String unicode;

    /**
     * 是否置顶显示
     */
    private Boolean isTopShow;

    /**
     * 事项标题
     */
    private String remindName;

    /**
     * 明细描述
     */
    private String remark;

    /**
     * 最近1次月经来潮时间
     */
    private Date mensesLastDateOne;

    /**
     * 最近2次月经来潮时间
     */
    private Date mensesLastDateTwo;

    /**
     * 持续天数
     */
    private Integer mensesKeepDateNum;

    /**
     * 是否来潮提醒
     */
    private Boolean isMensesStartDateAlter;

    /**
     * 是否来潮当日提醒
     */
    private Boolean isMensesStartDateAlter1;

    /**
     * 是否来潮前一天提醒
     */
    private Boolean isMensesStartDateAlter2;

    /**
     * 是否排卵日提醒
     */
    private Boolean isOvulationDateAlter;

    /**
     * 是否排卵日当日提醒
     */
    private Boolean isOvulationDateAlter1;

    /**
     * 是否排卵日前一天提醒
     */
    private Boolean isOvulationDateAlter2;

    /**
     * 是否排卵期提醒
     */
    private Boolean isOvulationDurationAlter;

    /**
     * 是否排卵期第一天提醒
     */
    private Boolean isOvulationDurationAlter1;

    /**
     * 是否排卵期前一天提醒
     */
    private Boolean isOvulationDurationAlter2;

    /**
     * 是否安全日提醒
     */
    private Boolean isSafeDateAlter;

    /**
     * 是否安全日当日提醒
     */
    private Boolean isSafeDateAlter1;

    /**
     * 是否安全日前一天提醒
     */
    private Boolean isSafeDateAlter2;

    /**
     * 来潮当天提醒时间
     */
    private String mensesDayTime;

    /**
     * 来潮前一天提醒时间
     */
    private String mensesPrevDayTime;

    /**
     * 排卵日当天提醒时间
     */
    private String ovulationDayTime;

    /**
     * 排卵日前一天提醒时间
     */
    private String ovulationPrevDayTime;

    /**
     * 排卵期当天提醒时间
     */
    private String ovulationDurationDayTime;

    /**
     * 排卵期前一天提醒时间
     */
    private String ovulationDurationPrevDayTime;

    /**
     * 安全日当天提醒时间
     */
    private String safeDateDayTime;

    /**
     * 安全日前一天提醒时间
     */
    private String safeDatePrevDayTime;

    /**
     * 是否启用
     */
    private Boolean isActive;

    @Transient
    @ExcelTitle
    private String mensesLastDateOneStr;

    @Transient
    @ExcelTitle
    private String mensesLastDateTwoStr;

    @ManyToOne
    @JoinColumn(name = "remind_type_id")
    private RemindType remindType;

}
